<?php

/*
 * Copyleft 2015 The TFT
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 */

class ModeleUser extends ModelePDO {
    /*
     * Retourne tous les membres
     */

    public static function getMembres() {
        return self::getLesTuples('membre');
    }

    /**
     * Retourne un membre à partir d'un identifiant passé en paramètre
     * @param string $id
     * @return stdClass
     */
    public static function getMembreById($id) {
        return self::getPremierTupleByChamp('membre', 'id', $id);
    }

    /**
     * Ajoute un membre dans la BDD
     * @param string $id
     * @param string $login
     * @param string $passe
     */
    public static function ajouterMembre($login, $password, $dateInscription) {
        self::seConnecter();

        self::$requete = "INSERT INTO membre(login, password, dateInscription) VALUES(:login, :password, :dateInscription)";
        self::$pdoStResults = self::$pdoCnxBase->prepare(self::$requete);

        self::$pdoStResults->bindParam(':login', $login);
        self::$pdoStResults->bindParam(':password', $password);
        self::$pdoStResults->bindParam(':dateInscription', $dateInscription);

        return self::$pdoStResults->execute();
    }

    /**
     * Modifie une membre grâce aux données passées en  paramètres
     * @param string $id
     * @param strng $login
     * @param string $passe
     * @param string $rang
     */
    public static function modifierMembre($id, $login, $passe, $rang) {
        self::seConnecter();

        self::$requete = "UPDATE membre SET login=:login, password=:password, rang=:rang WHERE id=:id";
        self::$pdoStResults = self::$pdoCnxBase->prepare(self::$requete);

        self::$pdoStResults->bindParam(':login', $login);
        self::$pdoStResults->bindParam(':password', $passe);
        self::$pdoStResults->bindParam(':rang', $rang);
        self::$pdoStResults->bindParam(':id', $id);

        return self::$pdoStResults->execute();
    }

    /**
     * Suppression d'une membre à partir d'un identifiant de membre passé en paramètre
     * @param string $id
     */
    public static function supprimerMembre($id) {
        self::supprimerTupleByChamp('membre', 'id', $id);
    }

    public static function getDate() {
        $jour = date('d');
        $mois = date('m');
        $annee = date('Y');
        $heure = date('H') + 1;
        $min = date('i');
        $sec = date('s');

        return $dateDuJour = $jour . "/" . $mois . "/" . $annee . " à " . $heure . ":" . $min . ":" . $sec;
    }

    public static function getNbMembre($login, $passe) {
        return self::getRows("*", "membre", "login='$login' AND password='$passe'");
    }

    public static function getNbLogin($login) {
        return self::getRows("*", "membre", "login = '$login'");
    }

    /*
     * Retourne le degré d'accès d'un membre
     */

    public static function getAccesMembre($id) {
        self::seConnecter();

        self::$requete = "SELECT degre FROM rang, membre WHERE membre.idRang = rang.id AND membre.id = :id";
        self::$pdoStResults = self::$pdoCnxBase->prepare(self::$requete);
        self::$pdoStResults->bindParam(':id', $id);
        self::$pdoStResults->execute();

        return self::$pdoStResults->fetch(PDO::FETCH_OBJ);
    }

    public static function getPasseByMail($mail) {
        $nouveauPassword = self::genererPassword();

        return ModelePDO::getPremierTupleByChamp("membre", "email", $mail)->password;
    }

    public static function genererPassword() {
        $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
        $pass = array(); //remember to declare $pass as an array
        $alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
        for ($i = 0; $i < 8; $i++) {
            $n = rand(0, $alphaLength);
            $pass[] = $alphabet[$n];
        }
        return implode($pass); //turn the array into a string
    }

}

var_dump(ModeleUser::getPasseByMail("dandane.youness@gmail.com"));
$motDeP = ModeleUser::genererPassword();
echo $motDeP;
